/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 * Sleepycat Software. All rights reserved. * * $Id: PropUtil.java,v 1.1 2006/05/06 09:00:27 ckaestne Exp $ */ package com.sleepycat.je.utilint; import java.util.Enumeration; import java.util.Properties; import java.util.Set; import com.sleepycat.je.DatabaseException; /** * Convenience methods for handling JE properties. */ public class PropUtil { /** * @return true if the property is set to "true". */ public static boolean getBoolean(Properties props, String propName) { String value = props.getProperty(propName); if ((value != null) && (value.equalsIgnoreCase("true"))) { return true; } else { return false; } } /** * Validate properties in the property bag. If null was passed, return an * empty property object, else return the original property object. * * @throws DatabaseException if the property bag contains * a property not specified in the set of allowed properties. */ public static Properties validateProps(Properties props, Set allowedProps, String apiMethod) throws DatabaseException { if (props == null) { return new Properties(); } else { if (props.size() > 0) { Enumeration e = props.propertyNames(); while (e.hasMoreElements()) { String propName = (String) e.nextElement(); validateProp(propName, allowedProps, apiMethod); } } return props; } } /** * @throws DatabaseException if the property is not valid. */ public static void validateProp(String propName, Set allowedProps, String apiMethod) throws DatabaseException { if (!allowedProps.contains(propName)) { throw new DatabaseException (propName + " is not a valid property for " + apiMethod); } } /** * Convert microseconds to milliseconds, ensuring that any microsecond * value greater than zero converts to at least one millisecond to avoid a * zero millisecond result since Object.wait(0) waits forever. */ public static long microsToMillis(long micros) { return (micros + 999) / 1000; } }